#include "UInt64.h"

UInt64::UInt64(unsigned long long valor) {
    this->_valor = valor;
    this->_punteroADato = &_valor;
}

UInt64::UInt64(string valor) {
    this->_valor = atoi(valor.c_str());
    this->_punteroADato = &_valor;
}

UInt64::UInt64(void* punteroADato){
    this->_punteroADato = punteroADato;
}

void UInt64::comparar(TipoDeDato& tipoDeDato,ostream& out) {
    unsigned long long* otroValor = (unsigned long long*) tipoDeDato.damePunteroADato();
    if ( _valor != *otroValor )
        out << "Se esperaba " << _valor << " y se obtuvo " << *otroValor << " . Diferencia: " << _valor - (*otroValor) << endl;
}

unsigned long long UInt64::dameValor() {
    return this->_valor;
}

ClaseDeDato UInt64::getClass() {
    return C_U_INTEGER_64;
}
